package com.fintech.third.service.shzx;

import java.util.HashMap;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.fintech.common.service.BaseServiceImpl;
import com.fintech.third.constant.ThirdMethodConstants;
import com.fintech.third.model.ThirdEffectDTO;
import com.fintech.third.model.interfacedata.EdcDataCallOperationRecordsDto;
import com.marvels.common.utils.MarvelsLogUtil;

/**
 * 上海资信（该服务类仅供给智盒子用）
 * 
 * @author tux
 *
 */
@Service("lgdbShangHaiLogInService")
public class LgdbShangHaiLogInImpl extends BaseServiceImpl implements LgdbShangHaiLogInService {

	@Autowired
	private ShangHaiLogInService shangHaiLogInServiceImpl;

	@Override
	public Map<String, String> shzxPeronalInfo(Map<String, String> map, ThirdEffectDTO thirdEffectDTO)
			throws Exception {
		MarvelsLogUtil.getInstance().info(
				"===LgdbShangHaiLogInImpl.shzxPeronalInfo start=== map：" + map + " thirdEffectDTO：" + thirdEffectDTO);
		Map<String, String> returnMap = new HashMap<>();

		thirdEffectDTO.setInterfaceCode(ThirdMethodConstants.SHANGHAIZX001);
		/**
		 * 智盒子查询第三方时效性临时逻辑<BR>
		 * 1.直接拿身份证或者手机号码去时效性中间表里面查询，看是否存在有效记录 <BR>
		 * 2.如果存在，则取最新的一条记录，不再查询第三方<BR>
		 * 3.如果不存在，则直接查询第三方，成功后，向时效性中间表插入一条记录（有效时间写死）<BR>
		 */
		EdcDataCallOperationRecordsDto recordsDto = selectEdcDataCallOperationRecordSig(thirdEffectDTO);

		if (recordsDto == null) { // 时间有效期内无数据，直接查询第三方
			MarvelsLogUtil.getInstance().info("===LgdbShangHaiLogInImpl.shzxPeronalInfo 时间有效期内无数据");
			// 调用以前接口
			shangHaiLogInServiceImpl.queryDirect(map);
			// 插入时效性中间表
			int effectTime = getLgdbEffectTime(); // 查询智盒子配置的临时时间有效性
			if (effectTime > 0) {
				thirdEffectDTO.setEffectTime(effectTime); // 临时使用，写死时间
				saveEdcDataCallOperationRecords(thirdEffectDTO);
			}
		} else { // 时间有效期内有数据，不再查询第三方
			MarvelsLogUtil.getInstance().info("===LgdbShangHaiLogInImpl.shzxPeronalInfo 时间有效期内有数据");
		}
		returnMap.put("code", "0000");
		returnMap.put("msg", "成功");
		return returnMap;
	}

}
